package com.wander.patterns.act.templetemethod;

/**
 * @description:银行模板方法
 * @author: zhuyong
 * @create: 2019-09-11 16:24
 **/
public abstract class BankTempleteMethod {

    private void getTicket(){
        System.out.println("固定的操作:用户去银行取钱 先排号");
    }

    /**
     * 具体的业务方法 取钱
     * 钩子方法 勾选了哪个子类调用哪个子类的方法
     */
    protected abstract void op();

    /**
     * 给银行前台打分
     */
    private void vote(){
        System.out.println("固定的操作:给银行前台打分");
    }


    protected final void process(){
        this.getTicket();

        this.op();

        this.vote();
    }
}
